#if !defined(__ERREUR_H)
#define __ERREUR_H

#include "SDL/SDL.h"
#include <string>

extern const char initialisation[];

struct erreur {
	virtual operator std::string() const = 0;
	virtual ~erreur() = 0;
};

/**
 * Symbolise une erreur (peut être jeté en exception) avec un message
 * d'erreur.
 */
template <const char *D>
class une_erreur : public erreur {
	std::string message_erreur_;
public:
	une_erreur(bool erreur_sdl = false) : message_erreur_(D) {
		if(erreur_sdl) {
			message_erreur_ += ": ";
			message_erreur_ += SDL_GetError();	
		}
	}
	operator std::string() const { return message_erreur_; }
};

#endif
